Stabilizing images

ABSTRACT

A method, apparatus, and computer readable storage medium provides the ability to stabilize a series of two or more still images (i.e., a clip). The clip of image data is obtained. The clip is then analyzed to produce a set of source curves that represent a global movement detected in the clip. Each of the source curves is filtered to compute result curves. The source and result curves are then exposed and displayed to the user who may modify/tweak the curves as desired. Automatically, without additional user input, and without reanalyzing the original clip, the result curves are recomputed based on the user&#39;s changes. The original clip is then transformed into a result clip/series based on the source and result curves.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to stabilizing images in a filmclip, and in particular, to a method, apparatus, and article ofmanufacture for stabilizing images by exposing and using source curvesrepresenting global movement detected in a film clip.

2. Description of the Related Art

In a high-end post-production system, stabilization is an important partof the processing pipeline. Even with today's greatest trackingalgorithms, automatic stabilization of some film shots is sometimesimpossible. There are many causes to this problem including:

-   -   excessive/random shaking in the original shot;    -   occlusion;    -   movement/distortion of certain elements in the shot; and    -   general lack of flexibility in the tracking algorithm.

Typically, each cause leads to a bad result, which means that the resultshots will not be 100% stabilized.

In the prior art, to stabilize a sequence of images, the entire sequenceof images is analyzed to produce a set of “trackers” that followentities throughout the sequence. Once analyzed, the user has the optionof accepting the analysis and trackers or the user could re-perform theanalysis by specifying either a region-of-interest (ROI) or a matte(mask) that would try to isolate the feature that must be tracked.However, whether an ROI or matte is provided, the entire analysis of thesequence of images must be re-performed which consumes a considerableamount of time and processing. In addition, since the features mightmove within a scene (e.g., throughout the sequence of images), theROI/mask must be animated prior to the analysis for the analysis toresult in a satisfactory result. Such a methodology may still fail tosolve the stabilization process, consumes considerable time andresources, and may further present additional problems.

Accordingly, what is needed is a methodology that allows the user tostabilize a sequence of images by modifying/adjusting the results of ananalysis of images in a clip without re-analyzing the original images.

SUMMARY OF THE INVENTION

One or more embodiments of the invention overcome the problems of theprior art providing the ability to fully expose and modify/tweakanalysis/stabilization curves in order to manipulate relative camerashake. Such capabilities are provided without performing a second orre-analysis of image data thereby speeding up the process and reducingthe amount of user interaction necessary.

BRIEF DESCRIPTION OF THE DRAWINGS

Referring now to the drawings in which like reference numbers representcorresponding parts throughout:

FIG. 1 is an exemplary hardware and software environment used toimplement one or more embodiments of the invention;

FIG. 2 illustrates the components of a computer system in accordancewith one or more embodiments of the invention;

FIGS. 3 and 4 illustrate a source curve and result curve in accordancewith one or more embodiments of the invention; and

FIG. 5 is a flow chart illustrating the logical flow for stabilizing aseries of two or more still images (i.e., a clip of image data) inaccordance with one or more embodiments of the invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

In the following description, reference is made to the accompanyingdrawings which form a part hereof, and which is shown, by way ofillustration, several embodiments of the present invention. It isunderstood that other embodiments may be utilized and structural changesmay be made without departing from the scope of the present invention.

Overview

A clip of image data is analyzed to produce a set of sourcestabilization curves. The source stabilization curves are exposed to theuser who may modify and edit the curves as desired. Thereafter, withoutreanalyzing the original clip of image data, result curves aredetermined that are directly applied to the clip of image data tostabilize any global movement in the clip.

Hardware Environment

FIG. 1 is an exemplary hardware and software environment used toimplement one or more embodiments of the invention. Embodiments of theinvention are typically implemented using a computer 100, whichgenerally includes or are communicatively coupled to a display device102, data storage device(s) 104, cursor control devices 106A, stylus106B, and other devices. In addition, a clip of image data such as acamera shot or video 107 may be used an input into computer 100. Thoseskilled in the art will recognize that any combination of the abovecomponents, or any number of different components, peripherals, andother devices, may be used with the computer 100.

One or more embodiments of the invention are implemented by acomputer-implemented program 108 (or multiple programs 108). Such aprogram may be a visual effects design and/or compositing application, avideo editing (linear or non-linear) application, an animationapplication, color-grading and color management application, a compiler,a parser, a shader, a shader manager library, a Graphics Processing Unit(GPU) program, or any type of program that executes on a computer 100(e.g., that performs edits on or manipulates video 107). The program 108may be represented by one or more windows displayed on the displaydevice 102. Generally, the program 108 comprises logic and/or dataembodied in/or readable from a device, media, carrier, or signal, e.g.,one or more fixed and/or removable data storage devices 104 connecteddirectly or indirectly to the computer 100, one or more remote devicescoupled to the computer 100 via a data communications device, etc. Inaddition, program 108 (or other programs described herein) may be anobject-oriented program having objects and methods as understood in theart. Further, the program 108 may be written in any programming languageincluding C, C++, Pascal, Fortran, Java™, etc. Further, as used herein,multiple different programs may be used and communicate with each other.

In one or more embodiments, instructions implementing the graphicsprogram 108 are tangibly embodied in a computer-readable medium, e.g.,data storage device 104, which could include one or more fixed orremovable data storage devices, such as a zip drive, floppy disc drive,hard drive, CD-ROM drive, DVD drive, tape drive, etc. Further, thegraphics program 108 is comprised of instructions which, when read andexecuted by the computer 100, causes the computer 100 to perform thesteps necessary to implement and/or use the present invention. Graphicsprogram 108 and/or operating instructions may also be tangibly embodiedin a memory and/or data communications devices of computer 100, therebymaking a computer program product or article of manufacture according tothe invention. As such, the terms “article of manufacture” and “computerprogram product” as used herein are intended to encompass a computerprogram accessible from any computer readable device or media. Further,as used herein, embodiments may also include a computer readable storagemedium encoded with computer program instructions which when accessed bya computer cause the computer to load the program instructions to amemory therein creating a special purpose data structure causing thecomputer to operate as a specially programmed computer that executes amethod.

The components of computer system 100 are further detailed in FIG. 2and, in one or more embodiments of the present invention, saidcomponents may be based upon the Intel® E7505 hub-based chipset.

The system 100 includes two central processing units (CPUs) 202A, 202B(e.g., Intel® Pentium™ Xeon™ 4 DP CPUs running at three Gigahertz, orAMD™ CPUs such as the Opteron™/Athlon X2™/Athlon™ 64), that fetch andexecute instructions and manipulate data via a system bus 204 providingconnectivity with a Memory Controller Hub (MCH) 206. CPUs 202A, 202B areconfigured with respective high-speed caches 208A, 208B (e.g., that maycomprise at least five hundred and twelve kilobytes), which storefrequently accessed instructions and data to reduce fetching operationsfrom a larger memory 210 via MCH 206. The MCH 206 thus co-ordinates dataflow with a larger, dual-channel double-data rate main memory 210 (e.g.,that is between two and four gigabytes in data storage capacity) andstores executable programs which, along with data, are received via saidbus 204 from a hard disk drive 212 providing non-volatile bulk storageof instructions and data via an Input/Output Controller Hub (ICH) 214.The I/O hub 214 similarly provides connectivity to DVD-ROM read-writer216 and ZIP™ drive 218, both of which read and write data andinstructions from and to removable data storage media. Finally, I/O hub214 provides connectivity to USB 2.0 input/output sockets 220, to whichthe stylus and tablet 106B combination, keyboard, mouse 106A, and video107 are connected, all of which send user input data to system 100.

A graphics card (also referred to as a graphics processing unit [GPU])222 receives graphics data (e.g., originally recorded by video 107) fromCPUs 202A, 202B along with graphics instructions via MCH 206. The GPU222 may be coupled to the MCH 206 through a direct port 224, such as thedirect-attached advanced graphics port 8X (AGP™ 8X) promulgated by theIntel® Corporation, or the PCI-Express™ (PCIe) x16, the bandwidth ofwhich may exceed the bandwidth of bus 204. The GPU 222 may also includesubstantial dedicated graphical processing capabilities, so that theCPUs 202A, 202B are not burdened with computationally intensive tasksfor which they are not optimized.

GPU 222 (also referred to as video processing units [VPUs], graphicscards, or video cards) can be programmed in order to customize theirfunctionality. GPU 222 programming is a very powerful and versatiletechnology because it allows software developers to implement compleximaging and data processing algorithms and execute the algorithms athigh speeds on a computer workstation's GPU 222. Accordingly, a GPU 222is a specialized logic chip or card that is devoted to rendering 2D or3D images (e.g., video 107). Display adapters often contain one or moreGPUs 222 for fast graphics rendering. The more sophisticated and fasterthe GPUs 222, combined with the architecture of the display adapter, themore realistically games and video are displayed. GPUs 222 may each haveparticular video/display capabilities for use in different environments.For example, GPU 222 may provide capabilities for texturing, shading,filtering, blending, rendering, interlacing/de-interlacing, scaling,multiple GPU 222 parallel execution, color correction, encoding, TVoutput, etc.

Network card 226 provides connectivity to another computer 100 or otherdevice (e.g., a framestore, storage, etc.) by processing a plurality ofcommunication protocols, for instance a communication protocol suitableto encode and send and/or receive and decode packets of data over aGigabit-Ethernet local area network. A sound card 228 is provided whichreceives sound data from the CPUs 202A, 202B along with sound processinginstructions, in a manner similar to GPU 222. The sound card 228 mayalso include substantial dedicated digital sound processingcapabilities, so that the CPUs 202A, 202B are not burdened withcomputationally intensive tasks for which they are not optimized.Network card 226 and sound card 228 may exchange data with CPUs 202A,202B over system bus 204 by means of a controller hub 230 (e.g.,Intel®'s PCI-X controller hub) administered by MCH 206.

Those skilled in the art will recognize that the exemplary environmentillustrated in FIGS. 1 and 2 are not intended to limit the presentinvention. Indeed, those skilled in the art will recognize that otheralternative environments may be used without departing from the scope ofthe present invention.

Software Embodiments

One or more embodiments of the invention provide for a graphicsapplication 108 that enables the ability to stabilize or edit globalmovements from an original film shot (e.g., caused by camera shakingduring filming) 107. To better understand the context of the invention,a description of image processing and clips is useful.

As used herein, a clip is a sequence of images or frames 107 loaded froman external device such as a VTR (video tape recorder), stored indigital format, and displayed in a clip library and on a desktop. Clipsmay be edited, processed, and recorded to/on external devices.Postproduction of sequences for film and video is an extremely complexundertaking. Each clip may have dozens of separate elements/operationsthat need to be combined/composited, each individual element requiringsignificant effort on the part of a digital artist. For example, tocomposite a moving car onto a new background may require a mask for thecar be cut and perfected for every frame of the sequence.

Professional compositing software helps digital artists and managersvisualize the process of clip development by building a “dependencygraph” of elements and effects for each sequence. In such software,operators, tasks, or modules/functions perform a variety of functionswith respect to a clip or source. For example, a module may performcompositing, painting, color correction, degraining, blurring, etc. Adependency graph of such software may also be referred to as a processtree or a schematic view of a process tree. Such a tree illustrates theelements and effects needed to complete a sequence of functions andidentifies the hierarchy that shows the relationship and dependenciesbetween elements. Accordingly, as the end-user interacts with media andtools in a schematic view, the system constructs a graph representingthe activity and the relationships between the media and tools invokedupon them. The purpose of the dependency graph is to manage and maintainthe relationships between the nodes representing the media and thetools.

To remove camera jitter or lock an object's position over a sequence offrames (in a video 107) to make it appear motionless, one or moreembodiments may provide a stabilization node for use by the user. Thestabilization node employs a tracking engine that analyzes a clip ofimage data (consisting of multiple frames) to detect movement. In thisregard, certain features of an image are identified on a per frame basisand camera movement is determined from one frame to another frame. Usersmay identify a matte/mask to exclude certain areas from the analysis(which may require an animated matte over time) or alternatively mayspecify a region of interest that provides a rectangle (or othergeometric shape) that the user can resize to indicate the region to beanalyzed in the clip (which may also be animated over time).

In the prior art, subsequent to the analysis, the user was shown whatwas tracked in a scene (e.g., via a series of trackers/track points).Thereafter, the user could remove or add to a particular feature.However, after editing the trackers, the prior art required the analysisof the entire scene to be re-performed. Further, such a methodologywould not permit the ability to edit or work with perspective.

In one or more embodiments of the invention, the output of the trackingengine is a set of curves that represents the global movement detectedin the original shot (animation or series of still images) 107. Thosecurves are referred to herein as the “source curves”. There is onesource curve for each of the following nine (9) axis:

-   -   Position (X/Y);    -   Scaling (X/Y);    -   Rotation (Z);    -   Perspective (X/Y/Shear/Anamorphic).

To create a source curve, the tracking engine produces“transform-matrices” (one 4×4 matrix for each frame). Each of thematrices may be in a standard openGL format and represents the detectedtransformation between the first frame and the current frame (i.e., thecamera movement/jitter for the frame that has just been analyzed). Suchtransformation matrices are created using 3D projections (e.g.,orthographic or perspective projections) obtained by tracking featuresof the images using trackers.

It is undesirable and difficult for a user to work directly with suchmatrices. Accordingly, using basic matrix operations, parameters areextracted from the matrix (position, rotation, scaling, etc.) and avalue is set on a curve for each of those parameters. By producing thematrix and extracting parameters for each frame over the clip (i.e.,over many frames), the source curves result. In other words, based onthe matrix and extraction, a source curve results on each parameter thatis animated over time. Thus, each curve represents the raw movement thatis detected for the particular parameter.

Based on user defined parameters, each of these source curves is thenfiltered (in the frequency domain) to obtain “result curves” (smoothversion of the “source curves”). The difference between the “resultcurves” and the “source curves” defines the applied transformation thatcan be used to stabilize the source shot, removing the detected movementand producing the result shot.

Various methods may be used to filter the source curves. For example, acamera pan may have shaking in the same axis. A high frequency filtercould be used to potentially eliminate the shake but retain the panmovement. Various blur operations (e.g., an average blur or median blur)can be used to filter the high frequency data. In addition, the bluroperation may be flexible by exposing allowing modification ofparameters of the blur operation by the user (e.g., radius, weight ofcenter pixel, etc.).

Once the filtering (e.g., blur operation) is completed, the output is aset of “result curves”. However, rather than forcing a reanalysis of theoriginal shot or image data to obtain the source and result curves, thesource curves are exposed to the user who may edit the curves as desired(e.g., using a curve/channel editor). Subsequent to the editing, theresult curves are re-calculated. The parameters and values are extractedfrom the result curves (using standard matrix functions) to provide atransformation matrix that can be applied to each frame to remove theundesirable movement (e.g., camera jitter or shaking).

FIGS. 3 and 4 illustrate a source curve and result curve in accordancewith one or more embodiments of the invention. Curves 302 and 402 arethe source curves and curves 304 and 404 are the filtered result curves.The curves 302, 402, 304, and 404 are the result of an analysis on afifty (50)-frame shot with camera shake. As illustrated in FIG. 3, basedon the parameters specified, the result curve 304 is completely filteredand the camera movement is completely removed (i.e., the result curveappears fairly straight/smooth).

In FIG. 4, the filtering parameters were changed so that the camerashake is reduced, but not completely removed. In such a case,embodiments of the invention allow the user to pick any point (e.g.,point 406-408) in the source curve 402 and modify the point 406-408.

As described above, if the user were to modify the trackers, specify aregion of interest, or utilize a matte, the source curves 302 and 402would contain various glitches and offsets. Accordingly, regardless ofthe filtering performed, acceptable result curve 304 and 404 could notproduced. Accordingly, embodiments of the invention allow the user touse his/her judgment (and knowledge of the shot movement) to modify the“source curves” 302 and 402 so that they represent the real movement inthe original shots. This curve modification/tweaking can be performedusing available curve editing modules. For example, in one or moreembodiments, the channel editor, a powerful and flexible curve editortool that is accessible in the IFF/FS software suite offered by theassignee of the present invention may be used to edit the source curves302/402.

By editing the source curves 302/402, the “result curves” 304 and 404are automatically recomputed and the result is automaticallyregenerated. As used herein, the term “automatically” refers toperforming steps without additional user input and/or independently fromother steps (e.g., independent from the analysis of the original imagedata 107).

Once the source curves 302 and 402 have been manipulated and the user issatisfied with the results (i.e., the result curves 304 and 404), theresulting image can be computed. In this regard, the appliedtransformation (for a specific frame) is the difference between thesource curves 302/402 and result curves 304/404. Those differences (onefor position, one for scaling, etc.) are used to compute atransformation matrix. This matrix transformation is used in openGL (thegraphic library) and the source image (i.e., original shot 107) istransformed according to this transformation, bringing the trackedfeature at the same position as it was on the reference frame (typicallythe first frame).

Logical Flow

FIG. 5 is a flow chart illustrating the logical flow for stabilizing aseries of two or more still images (i.e., a clip of image data) inaccordance with one or more embodiments of the invention. At step 500, aseries of two or more still images (i.e., an original shot or video clip107) is obtained into a memory of a computer.

At step 502, the clip is analyzed (using a computer hardware processor)to produce a set of one or more source curves. The source curvesrepresent a global movement detected in the clip (e.g., camera shake,jitter, etc.). The source curves may consist of an x-position curve, ay-position curve, a x-scaling curve, a y-scaling curve, a z-rotationcurve, a x-perspective curve, a y-perspective curve, a shear perspectivecurve (i.e., a perspective from a specific set of coordinates), and ananamorphic perspective curve (i.e., a curve that may require a user/viewto use a special device or occupy a specific vantage point/perspectiveto reconstitute the image).

Various methods may be used to produce the source curves. In one or moreembodiments, a series of steps are performed for each image in the clip.A first image being analyzed is compared to a second image from the clip(e.g., the next sequential image in the clip). A transformation matrixis produced, based on the comparing that represents a detectedtransformation between the two images being compared. Parameters fromeach transformation matrix are extracted. Source curves are thencreated, with each of the source curve corresponding to each of theparameters animated over time (i.e., across the clip). Standard matrixoperations may be used to perform the extractions.

At step 504, each of the source curves is filtered (e.g., using acomputer hardware processor) to compute one or more result curves intothe memory of the computer. Such filtering may filter out/exclude highfrequency data from the source curves. Further, the high frequency datamay be filtered using a blur operation.

At step 506, the source curves and result curves are displayed on adisplay device. In other words, the curves themselves (that representthe different parameters) are directly exposed to the user.

At step 508, input is accepted from a user modifying/tweaking the sourcecurves.

At step 510, the result curves are recomputed into the memory of thecomputer. Such a re-computation is performed automatically, withoutadditional user input, and without re-analyzing the clip of image data(i.e., the original shot).

At step 512, the original shot/clip is transformed into a resultclip/series based on the source curves and result curves. In thisregard, based on the difference between the source and result curves, atransformation matrix can be created (i.e., using standard matrixoperations) that is then applied to each frame in the clip. The resultis a clip of image data that has been stabilized based on userinteraction with the source curves. Since the original clip does notneed to be reanalyzed to produce trackers, a significant decrease inboth computing time and processor use is achieved.

Conclusion

This concludes the description of the preferred embodiment of theinvention. The following describes some alternative embodiments foraccomplishing the present invention. For example, any type of computer,such as a mainframe, minicomputer, or personal computer, or computerconfiguration, such as a timesharing mainframe, local area network, orstandalone personal computer, could be used with the present invention.

The foregoing description of the preferred embodiment of the inventionhas been presented for the purposes of illustration and description. Itis not intended to be exhaustive or to limit the invention to theprecise form disclosed. Many modifications and variations are possiblein light of the above teaching. It is intended that the scope of theinvention be limited not by this detailed description, but rather by theclaims appended hereto.

1. A computer-implemented method for stabilizing a series of two or morestill images comprising: (a) obtaining the series of two or more stillimages into a memory of the computer; (b) analyzing, using a computerhardware processor, the series of two or more still images to produce aset of one or more source curves, wherein: (i) the one or more sourcecurves represent a global movement detected in the series of two or morestill images; and (ii) the set of one or more source curves are producedby performing the following steps for each image in the series of two ormore images: (1) comparing a first image being analyzed to a secondimage from the series of two or more still images; (2) producing atransformation matrix based on the comparing, wherein the transformationmatrix represents a detected transformation between the first imagebeing analyzed and the second image; (3) extracting one or moreparameters from each transformation matrix produced; and (4) creatingone or more source curves, with each of the one or more source curvescorresponding to each of the one or more parameters animated over time;(c) filtering, using the computer hardware processor, each of the one ormore source curves to compute one or more result curves into the memoryof the computer; (d) displaying the one or more source curves and one ormore result curves on a display device; (e) accepting input from a usermodifying the one or more source curves; (f) automatically, withoutadditional user input, and without reanalyzing the series of two or morestill images, recomputing the one or more result curves into the memoryof the computer; (g) transforming the series of two or more stillimages, into a result series, based on the one or more source curves andone or more result curves.
 2. The method of claim 1, wherein the one ormore source curves comprise one or more position curves.
 3. The methodof claim 1, wherein the one or more source curves comprise one or morescaling curves.
 4. The method of claim 1, wherein the one or more sourcecurves comprise one or more rotation curves.
 5. The method of claim 1,wherein the one or more source curves comprise one or more perspectivecurves.
 6. The method of claim 1, wherein the filtering comprisesfiltering high frequency data from the one or more source curves.
 7. Themethod of claim 6, wherein the filtering of high frequency datacomprises performing a blur operation.
 8. An apparatus for stabilizing aseries of two or more still images in computer system comprising: (a) acomputer having a memory; (b) a series of two or more still images; (c)a display device communicatively coupled to the computer; (d) anapplication executing on the computer, wherein the application isconfigured to: (i) obtain the series of two or more still images intothe memory; (ii) analyze the series of two or more still images toproduce a set of one or more source curves, wherein: (1) the one or moresource curves represent a global movement detected in the series of twoor more still images; and (2) the set of one or more source curves areproduced by the application performing the following steps for eachimage in the series of two or more images: (A) comparing a first imagebeing analyzed to a second image from the series of two or more stillimages; (B) producing a transformation matrix based on the comparing,wherein the transformation matrix represents a detected transformationbetween the first image being analyzed and the second image; (C)extracting one or more parameters from each transformation matrixproduced; and (D) creating one or more source curves, with each of theone or more source curves corresponding to each of the one or moreparameters animated over time; (iii) filter each of the one or moresource curves to compute one or more result curves into the memory; (iv)display the one or more source curves and one or more result curves onthe display device; (v) accept input from a user modifying the one ormore source curves; (vi) automatically, without additional user input,and without reanalyzing the series of two or more still images,recompute the one or more result curves into the memory; (vii) transformthe series of two or more still images, into a result series, based onthe one or more source curves and one or more result curves.
 9. Theapparatus of claim 8, wherein the one or more source curves comprise oneor more position curves.
 10. The apparatus of claim 8, wherein the oneor more source curves comprise one or more scaling curves.
 11. Theapparatus of claim 8, wherein the one or more source curves comprise oneor more rotation curves.
 12. The apparatus of claim 8, wherein the oneor more source curves comprise one or more perspective curves.
 13. Theapparatus of claim 8, wherein the filtering comprises filtering highfrequency data from the one or more source curves.
 14. The apparatus ofclaim 13, wherein the filtering of high frequency data comprisesperforming a blur operation.
 15. A non-transitory computer readablestorage medium encoded with computer program instructions which whenaccessed by a computer cause the computer to load the programinstructions to a memory therein creating a special purpose datastructure causing the computer to operate as a specially programmedcomputer, executing a method of stabilizing a series of two or morestill images, comprising: (a) obtaining, in the specially programmedcomputer, the series of two or more still images into the memory; (b)analyzing, in the specially programmed computer, the series of two ormore still images to produce a set of one or more source curves,wherein: (i) the one or more source curves represent a global movementdetected in the series of two or more still images; and (ii) the set ofone or more source curves are produced by performing the followingsteps, in the specially programmed computer, for each image in theseries of two or more images: (1) comparing a first image being analyzedto a second image from the series of two or more still images; (2)producing a transformation matrix based on the comparing, wherein thetransformation matrix represents a detected transformation between thefirst image being analyzed and the second image; (3) extracting one ormore parameters from each transformation matrix produced; and (4)creating one or more source curves, with each of the one or more sourcecurves corresponding to each of the one or more parameters animated overtime; (c) filtering, in the specially programmed computer, each of theone or more source curves to compute one or more result curves; (d)displaying, using the specially programmed computer, the one or moresource curves and one or more result curves on a display device; (e)accepting, in the specially programmed computer, input from a usermodifying the one or more source curves; (f) automatically recomputing,in the specially programmed computer, without additional user input, andwithout reanalyzing the series of two or more still images, the one ormore result curves; (g) transforming, in the specially programmedcomputer, the series of two or more still images, into a result series,based on the one or more source curves and one or more result curves.16. The computer program storage medium of claim 15, wherein the one ormore source curves comprise one or more position curves.
 17. Thecomputer program storage medium of claim 15, wherein the one or moresource curves comprise one or more scaling curves.
 18. The computerprogram storage medium of claim 15, wherein the one or more sourcecurves comprise one or more rotation curves.
 19. The computer programstorage medium of claim 15, wherein the one or more source curvescomprise one or more perspective curves.
 20. The computer programstorage medium of claim 15, wherein the filtering comprises filteringhigh frequency data from the one or more source curves.
 21. The computerprogram storage medium of claim 20, wherein the filtering of highfrequency data comprises performing a blur operation.